package com.irdstudio.efp.esb.api.bean.sed.credit.req;

import com.alibaba.fastjson.annotation.JSONField;
import com.irdstudio.basic.framework.core.annotation.BeanMapKey;
import com.irdstudio.basic.framework.core.annotation.DicType;
import com.irdstudio.basic.framework.core.constant.SDicChannelType;
import com.irdstudio.efp.esb.api.common.GroupeInterface.sed;
import com.irdstudio.efp.esb.common.constant.nls.*;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.NotNull;

/**
 * TODO: <br>
 *
 * 0.1:caoxin:2019/4/17 9:58: TODO: <br>
 * @author caoxin
 * @return 
 * @since 2019/4/17 9:58
 * @date 2019/4/17 9:58
 * @version 0.1
 */
public class ReqSedCreditBean {

	// 申请流水号
	@JSONField(ordinal = 1)
	@NotNull(groups= {sed.class})
	@NotEmpty(groups= {sed.class})
	@Length(max = 64,groups= {sed.class})
	private String CrdtAppFlowNo;

	// 借款人姓名
	@JSONField(ordinal = 2)
	@NotNull(groups= {sed.class})
	@NotEmpty(groups= {sed.class})
	@Length(max = 200,groups= {sed.class})
	private String BrwNm;


	// 证件类型
	@JSONField(ordinal = 3)
	@NotNull(groups= {sed.class})
	@NotEmpty(groups= {sed.class})
	@Length(max = 32)
	@DicType(dicType = NlsCertTpEnum.class, method = "getValue",groups= {sed.class})
	private String CertTp;

	// 证件号码
	@JSONField(ordinal = 4)
	@NotNull(groups= {sed.class})
	@NotEmpty(groups= {sed.class})
	@Length(max = 32,groups= {sed.class})
	private String CertNo;

	// 证件地址
	@JSONField(ordinal = 5)
	@Length(max = 256,groups= {sed.class})
	private String CertAddr;

	// 产品代码
	@JSONField(ordinal = 6)
	@NotNull(groups= {sed.class})
	@NotEmpty(groups= {sed.class})
	@Length(max = 32,groups= {sed.class})
	@DicType(dicType = NlsProdCdEnum.class, method = "getValue",groups= {sed.class})
	private String ProdCd;

	// 贷款产品名称
	@JSONField(ordinal = 6)
	@NotNull(groups= {sed.class})
	@NotEmpty(groups= {sed.class})
	@Length(max = 200)
	@DicType(dicType = NlsLoanProdNmEnum.class, method = "getValue",groups= {sed.class})
	private String LoanProdNm;

	// 渠道号
	@JSONField(ordinal = 8)
	@NotNull(groups= {sed.class})
	@NotEmpty(groups= {sed.class})
	@Length(max = 10,groups= {sed.class})
	@DicType(dicType = SDicChannelType.class, method = "getValue",groups= {sed.class})
	private String ChanNo;

	// 手机号码
	@JSONField(ordinal = 9)
	@NotNull(groups= {sed.class})
	@NotEmpty(groups= {sed.class})
	@Length(max = 11,groups= {sed.class})
	private String MblNo;

	// 银行卡号
	@JSONField(ordinal = 10)
	@Length(max = 32,groups= {sed.class})
	private String BankCardNo;

	// 推荐人工号
	@JSONField(ordinal = 11)
	@Length(max = 20,groups= {sed.class})
	private String RecomTlrId;

	// 性别
	@JSONField(ordinal = 12)
	@Length(max = 1,groups= {sed.class})
	@DicType(dicType = NlsBrwGndEnum.class, method = "getValue",groups= {sed.class})
	private String ClnGndCd;

	// 国籍
	@JSONField(ordinal = 13)
	@Length(max = 10,groups= {sed.class})
	@DicType(dicType = NlsNationEnum.class, method = "getValue",groups= {sed.class})
	private String Nation;

	// 职业
	@JSONField(ordinal = 14)
	@Length(max = 10,groups= {sed.class})
	@DicType(dicType = NlsCrrEnum.class, method = "getValue",groups= {sed.class})
	private String CrrCd;

	// 民族
	@JSONField(ordinal = 15)
	@Length(max = 10,groups= {sed.class})
	@DicType(dicType = NlsNationalityEnum.class, method = "getValue",groups= {sed.class})
	private String EthnicCd;

	// 学历
	@JSONField(ordinal = 16)
	@NotNull
	@NotEmpty
	@Length(max = 10,groups= {sed.class})
	@DicType(dicType = NlsEduEnum.class, method = "getValue",groups= {sed.class})
	private String EduCd;

	// 工作单位名称
	@JSONField(ordinal = 17)
	@Length(max = 200,groups= {sed.class})
	private String WrkCorpNm;

	// 工作单位地址
	@JSONField(ordinal = 18)
	@Length(max = 256,groups= {sed.class})
	private String WrkCorpAddr;

	// 联系地址
	@JSONField(ordinal = 19)
	@BeanMapKey("CtcAddr")
	@Length(max = 200,groups= {sed.class})
	private String CtcAddr;

	// 婚姻状况
	@JSONField(ordinal = 20)
	@Length(max = 8,groups= {sed.class})
	@DicType(dicType = NlsMrgSituEnum.class, method = "getValue",groups= {sed.class})
	private String MrgSitu;

	// 证件有效期
	@JSONField(ordinal = 21)
	@Length(max = 10,groups= {sed.class})
	private String IdenEfftDt;
	// 放款卡号
	@JSONField(ordinal = 22)
	@Length(max = 20,groups= {sed.class})
	private String DistrCardNo;
	// 申请额度
	@JSONField(ordinal = 23)
    @DecimalMax(value = "999999999999999999999999999999",groups = {sed.class} )
	private Double LoanAplLmt;
	// 贷款申请期限
	@JSONField(ordinal = 23)
	@Length(max = 5,groups= {sed.class})
	private String LoanAplTrm;
	// 贷款期限类型
	@JSONField(ordinal = 23)
	@Length(max = 10,groups= {sed.class})
	@DicType(dicType = NlsTrmTypeEnum.class, method = "getValue",groups= {sed.class})
	private String LoanTrmType;
	// 担保方式
	@JSONField(ordinal = 24)
	@Length(max = 10)
	@DicType(dicType = NlsGuarMdEnum.class, method = "getValue",groups= {sed.class})
	private String GuarMd;
	// 交易币种
	@JSONField(ordinal = 25)
	@Length(max = 3)
	@DicType(dicType = CurrCdEnum.class, method = "getValue",groups= {sed.class})
	private String TxnCurrCd;
	// 执行年利率
	@JSONField(ordinal = 26)
    @DecimalMax(value = "100",groups = {sed.class})
	private Double ExecYrRate;
	// 还款方式
	@JSONField(ordinal = 27)
	@Length(max = 32)
	@DicType(dicType = NlsRpyMdEnum.class, method = "getValue",groups= {sed.class})
	private String RpyMd;
	// 还款日期
	@JSONField(ordinal = 28)
	@Length(max = 10,groups= {sed.class})
	private String RpyDt;
	// 申请日期
	@JSONField(ordinal = 29)
	@Length(max = 10,groups= {sed.class})
	private String AplDt;
	// 配偶姓名
	@JSONField(ordinal = 27)
	@Length(max = 200,groups= {sed.class})
	private String SpsNm;
	// 职称代码
	@JSONField(ordinal = 27)
	@Length(max = 10)
	@DicType(dicType = NlsTtlEnum.class, method = "getValue",groups= {sed.class})
	private String TtlCd;

	public String getCrdtAppFlowNo() {
		return CrdtAppFlowNo;
	}

	public void setCrdtAppFlowNo(String crdtAppFlowNo) {
		CrdtAppFlowNo = crdtAppFlowNo;
	}

	public String getBrwNm() {
		return BrwNm;
	}

	public void setBrwNm(String brwNm) {
		BrwNm = brwNm;
	}

	public String getCertTp() {
		return CertTp;
	}

	public void setCertTp(String certTp) {
		CertTp = certTp;
	}

	public String getCertNo() {
		return CertNo;
	}

	public void setCertNo(String certNo) {
		CertNo = certNo;
	}

	public String getCertAddr() {
		return CertAddr;
	}

	public void setCertAddr(String certAddr) {
		CertAddr = certAddr;
	}

	public String getProdCd() {
		return ProdCd;
	}

	public void setProdCd(String prodCd) {
		ProdCd = prodCd;
	}

	public String getLoanProdNm() {
		return LoanProdNm;
	}

	public void setLoanProdNm(String loanProdNm) {
		LoanProdNm = loanProdNm;
	}

	public String getChanNo() {
		return ChanNo;
	}

	public void setChanNo(String chanNo) {
		ChanNo = chanNo;
	}

	public String getMblNo() {
		return MblNo;
	}

	public void setMblNo(String mblNo) {
		MblNo = mblNo;
	}

	public String getBankCardNo() {
		return BankCardNo;
	}

	public void setBankCardNo(String bankCardNo) {
		BankCardNo = bankCardNo;
	}

	public String getRecomTlrId() {
		return RecomTlrId;
	}

	public void setRecomTlrId(String recomTlrId) {
		RecomTlrId = recomTlrId;
	}

	public String getClnGndCd() {
		return ClnGndCd;
	}

	public void setClnGndCd(String clnGndCd) {
		ClnGndCd = clnGndCd;
	}

	public String getNation() {
		return Nation;
	}

	public void setNation(String nation) {
		Nation = nation;
	}

	public String getCrrCd() {
		return CrrCd;
	}

	public void setCrrCd(String crrCd) {
		CrrCd = crrCd;
	}

	public String getEthnicCd() {
		return EthnicCd;
	}

	public void setEthnicCd(String ethnicCd) {
		EthnicCd = ethnicCd;
	}

	public String getEduCd() {
		return EduCd;
	}

	public void setEduCd(String eduCd) {
		EduCd = eduCd;
	}

	public String getWrkCorpNm() {
		return WrkCorpNm;
	}

	public void setWrkCorpNm(String wrkCorpNm) {
		WrkCorpNm = wrkCorpNm;
	}

	public String getWrkCorpAddr() {
		return WrkCorpAddr;
	}

	public void setWrkCorpAddr(String wrkCorpAddr) {
		WrkCorpAddr = wrkCorpAddr;
	}

	public String getCtcAddr() {
		return CtcAddr;
	}

	public void setCtcAddr(String ctcAddr) {
		CtcAddr = ctcAddr;
	}

	public String getMrgSitu() {
		return MrgSitu;
	}

	public void setMrgSitu(String mrgSitu) {
		MrgSitu = mrgSitu;
	}

	public String getIdenEfftDt() {
		return IdenEfftDt;
	}

	public void setIdenEfftDt(String idenEfftDt) {
		IdenEfftDt = idenEfftDt;
	}

	public String getDistrCardNo() {
		return DistrCardNo;
	}

	public void setDistrCardNo(String distrCardNo) {
		DistrCardNo = distrCardNo;
	}

	public Double getLoanAplLmt() {
		return LoanAplLmt;
	}

	public void setLoanAplLmt(Double loanAplLmt) {
		LoanAplLmt = loanAplLmt;
	}

	public String getLoanAplTrm() {
		return LoanAplTrm;
	}

	public void setLoanAplTrm(String loanAplTrm) {
		LoanAplTrm = loanAplTrm;
	}

	public String getLoanTrmType() {
		return LoanTrmType;
	}

	public void setLoanTrmType(String loanTrmType) {
		LoanTrmType = loanTrmType;
	}

	public String getGuarMd() {
		return GuarMd;
	}

	public void setGuarMd(String guarMd) {
		GuarMd = guarMd;
	}

	public String getTxnCurrCd() {
		return TxnCurrCd;
	}

	public void setTxnCurrCd(String txnCurrCd) {
		TxnCurrCd = txnCurrCd;
	}

	public Double getExecYrRate() {
		return ExecYrRate;
	}

	public void setExecYrRate(Double execYrRate) {
		ExecYrRate = execYrRate;
	}

	public String getRpyMd() {
		return RpyMd;
	}

	public void setRpyMd(String rpyMd) {
		RpyMd = rpyMd;
	}

	public String getRpyDt() {
		return RpyDt;
	}

	public void setRpyDt(String rpyDt) {
		RpyDt = rpyDt;
	}

	public String getAplDt() {
		return AplDt;
	}

	public void setAplDt(String aplDt) {
		AplDt = aplDt;
	}

	public String getSpsNm() {
		return SpsNm;
	}

	public void setSpsNm(String spsNm) {
		SpsNm = spsNm;
	}

	public String getTtlCd() {
		return TtlCd;
	}

	public void setTtlCd(String ttlCd) {
		TtlCd = ttlCd;
	}
}
